package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.EmailVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.MemberDetailVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.PhoneVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.request.SmsPhoneVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.MemberConfigGroupVO;
import com.ssy.lingxi.member.merchant.model.vo.login.request.MemberRegisterVO;
import com.ssy.lingxi.member.merchant.model.vo.login.request.ResetPasswordByEmailCodeVO;
import com.ssy.lingxi.member.merchant.model.vo.login.request.ResetPasswordBySmsCodeVO;
import com.ssy.lingxi.member.merchant.model.vo.login.response.MemberRegisterResultVO;
import com.ssy.lingxi.member.merchant.model.vo.login.response.MemberRegisterTypeMenuVO;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 会员资料服务接口
 * @author 万宁
 * @version 2.0.0
 * @date 2020-06-03
 */
public interface IMemberRegisterService {
    /**
     * 检查手机号码是否被注册使用
     * @param headers Http头部信息
     * @param phoneVO 手机号码
     * @return 检查结果
     */
    Wrapper<Void> checkPhoneRegistered(HttpHeaders headers, PhoneVO phoneVO);

    /**
     * 检查邮箱是否被注册使用
     * @param headers Http头部信息
     * @param emailVO 邮箱
     * @return 检查结果
     */
    Wrapper<Void> checkEmailRegistered(HttpHeaders headers, EmailVO emailVO);

    /**
     * 发送注册时短信验证码
     * @param headers Http头部信息
     * @param phoneVO 手机号码
     * @return 发送结果
     */
    Wrapper<Void> sendRegisterSmsCode(HttpHeaders headers, SmsPhoneVO phoneVO);

    /**
     * 发送手机号找回密码时的短信验证码
     * @param headers Http头部信息
     * @param phoneVO 手机号码
     * @return 发送结果
     */
    Wrapper<Void> sendResetPasswordSmsCode(HttpHeaders headers, SmsPhoneVO phoneVO);

    /**
     * 根据短信验证码重设密码
     * @param headers Http头部信息
     * @param codeVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> resetPasswordBySmsCode(HttpHeaders headers, ResetPasswordBySmsCodeVO codeVO);

    /**
     * 发送邮箱找回密码时的邮件
     * @param headers Http头部信息
     * @param emailVO 邮箱地址
     * @return 发送结果
     */
    Wrapper<Void> sendResetPasswordEmail(HttpHeaders headers, EmailVO emailVO);

    /**
     * 根据邮箱验证码重设密码
     * @param headers Http头部信息
     * @param codeVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> resetPasswordByEmailCode(HttpHeaders headers, ResetPasswordByEmailCodeVO codeVO);

    /**
     * 获取会员注册页面-会员类型、商业类型页面内容（第二页）
     * @param headers Http头部信息
     * @return 操作结果
     */
    Wrapper<List<MemberRegisterTypeMenuVO>> getRegisterTypePageContent(HttpHeaders headers);

    /**
     * 获取会员注册页面-详细信息页面内容（第三页）
     * @param detailVO 接口参数
     * @return 注册第三页的内容
     */
    Wrapper<List<MemberConfigGroupVO>> getRegisterDetailPageContent(HttpHeaders headers, MemberDetailVO detailVO);

    /**
     * 平台会员注册
     * @param headers Http头部信息
     * @param registerVO 接口参数
     * @return 操作结果
     */
    Wrapper<MemberRegisterResultVO> registerPlatformMember(HttpHeaders headers, MemberRegisterVO registerVO);

}
